﻿using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;

/** 
 ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
 * Description: 
 * Author: Heller (HellerSong@outlook.com)
 * CreationTime: 4/3/2015 9:09:59 PM
 ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** 
 **/
namespace DevGrammar
{
	[TestClass]
	public class TestMultiReturn
	{
		/*
		 * Without ref, it only make a value copy to parameters and change inside the function
		 */
		static void swapVariable(ref int i, ref int j)
		{
			int temp;
			temp = i;
			i = j;
			j = temp;
		}

		[TestMethod]
		public void test_ref_and_out()
		{
			/*
			 * ref scenarios: 函数内部对外部的值进行改变。因为是引用，所以必须先有(必须先初始化)，才能使用
			 * out scenarios: 函数内部为外部变量赋值。一般用在函数需要有多个返回值
			 */
			int a1 = 20, a2 = 30;
			swapVariable(ref a1, ref a2);
			Console.WriteLine("a1 = {0}, a2 = {1}", a1, a2);
		}


	}
}
